package com.school.sports.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableLogic;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

/**
 * 证书记录表实体类
 * 记录已生成的证书信息，包括证书文件路径和生成时间等
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("certificate_record")
public class CertificateRecord {
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 证书编号（唯一标识）
     */
    private String certificateNo;

    /**
     * 证书类型：participation（参赛证书）, award（获奖证书）, volunteer（志愿者证书）, referee（裁判证书）
     */
    private String certificateType;

    /**
     * 获得者用户ID
     */
    private Long recipientUserId;

    /**
     * 获得者姓名
     */
    private String recipientName;

    /**
     * 获得者班级/部门
     */
    private String recipientDepartment;

    /**
     * 关联项目ID（如果是参赛或获奖证书）
     */
    private Long projectId;

    /**
     * 关联项目名称
     */
    private String projectName;

    /**
     * 关联奖项ID（如果是获奖证书）
     */
    private Long awardId;

    /**
     * 奖项等级（如果是获奖证书）
     */
    private String awardLevel;

    /**
     * 证书标题
     */
    private String certificateTitle;

    /**
     * 证书内容描述
     */
    private String certificateContent;

    /**
     * 生成日期
     */
    private LocalDateTime issueDate;

    /**
     * 颁发机构
     */
    private String issuingAuthority;

    /**
     * 证书文件路径
     */
    private String certificateFilePath;

    /**
     * 证书文件URL
     */
    private String certificateFileUrl;

    /**
     * 模板ID
     */
    private Long templateId;

    /**
     * 生成用户ID
     */
    private Long generateUserId;

    /**
     * 证书状态：normal, revoked, reissued
     */
    private String status;

    /**
     * 逻辑删除标记：0-未删除，1-已删除
     */
    @TableLogic
    private Integer deleted;

    /**
     * 创建时间
     */
    private LocalDateTime createdAt;

    /**
     * 更新时间
     */
    private LocalDateTime updatedAt;

    /**
     * 生成用户姓名（关联查询时使用）
     */
    private String generateUserName;
}